package com.lakeworks.common.enums;

import static java.util.Arrays.stream;

/**
 * 通用状态值定义时不可以使用小于1<<7的值
 */

public enum FlagType implements ValueEnum<FlagType> {
    /**
     * 工单暂停
     */
    HOLDING(1 << 7),

    /**
     * 污渍终止
     */
    TERMINATE(1 << 8),

    /**
     * 删除标识
     */
    DELETE(1 << 9),

    /**
     * 不洗标识  目前已经没用
     */
    NOTWASH(1 << 10);


    private int value;

    FlagType(int value) {
        this.value = value;
    }

    public static int sum() {
        return stream(values()).mapToInt(FlagType::value).reduce(0, (a, b) -> a | b);
    }

    public static FlagType[] explode(int value) {
        return stream(values()).filter(s -> (s.value() & value) == s.value()).toArray(FlagType[]::new);
    }

    @Override
    public int value() {
        return this.value;
    }


}
